from fastapi import FastAPI
import ast
import traceback
import sys
from io import StringIO


app = FastAPI()



@app.post("/submit")
async def run_code(code: str):
    """
    接收前端传来的Python代码字符串，尝试运行并返回结果或者错误信息。
    """
    try:
        # 解析代码为抽象语法树，简单验证代码结构合法性（但不是绝对安全的验证）
        # 读取上传的文件内容
        code_content = await file.read()
        code_content = code_content.decode('utf-8')

        # 将代码内容保存到临时文件中（如果需要）
        # 或者直接对字符串内容进行检测（例如，对于简单的语法检查）

        # 使用 pylint 进行代码检查
        output = StringIO()
        Run(['--output-format=json'], reporter=TextReporter(output), files=[('input.py', code_content)])
        lint_result = output.getvalue()

        # 将 JSON 结果转换为 Python 字典
        result_dict = json.loads(lint_result)

        # 返回结果
        return {"result": result_dict}
        return {"message":"代码运行成功","re": result}
    except Exception as e:
        return {"error": traceback.format_exc()}